<?php

/**************************************************************************
* Source File	:  Composante.php
* Author        :  Amodeos - Herleman - Kuete
* Project name  :  Gestion Annuaire des anciens de l'UM2
* Modified   	:  18/05/2010
* Description	:  Definition de la classe abstraite Composante
**************************************************************************/

//Include
//include 'InterfaceSLD.php';

abstract class Composante //implements InterfaceSLD		
{
	//Attributes

	
	
	 
	private $adresseRue; // type : string
	private $adresseCp; // type : string
	private $adresseVille; // type : string
	private $nom;// type : string
	private $description;// type : string
	
	private $listFormation = array(); 	//type : tableau contenant la liste des formations de la composante

	
	//Constructeur
//	public function Composante ($rue, $cp, $ville, $listeForm) {
//		$this->adresseRue = $rue;
//		$this->adresseCp = $cp;
//		$this->adresseVille = $ville;
//		$this -> listFormation = $listeForm;
//	}
	
	//Accesseurs et Modificateurs
	public function getAdresseRue () {
		return $this->adresseRue;
	}
	
	public function getAdresseCp () {
		return $this->adresseCp;
	}
	
	public function getAdresseVille () {
		return $this->adresseVille;
	}
	
	public function getListFormation () {
		return $this -> listFormation;
	}
	
	public function getNom () {
			return $this -> nom;
		}
		
	public function getDescription () {
			return $this -> description;
		}
	
	
	public function setAdresseRue ($rue) {
		$this->adresseRue = $rue;
	}
	
	public function setAdresseCp ($cp) {
		$this->adresseCp = $cp;
	}
	
	public function setAdresseVille ($ville) {
		$this->adresseVille = $ville;
	}
	
	public function setNom ($nom) {
			$this->nom = $nom;
		}
	public function setDescription ($description) {
			$this->description = $description;
		}
	public function setListFormation ($listeForm) {
		$this -> listFormation = $listeForm;
	}
	
	//Methodes
	abstract public function save();
	abstract public function load();
	abstract public static function loadListe();
	abstract public function delete();

	
	/**
	 * Fonction permettant d'ajouter une nouvelle formation a une composante
	 * lorsque cette formation n'existe pas encore.
	 * @param  $formation La formation a ajouter. C'est un objet contenant la duree de la formation
	 */
	abstract public function ajouterFormation ($formation);
	
	/**
	 * Formation permettant de modifier toutes les informations d'une composante
	 * A savoir, sa rue, son code postal, sa ville et sa liste de formation
	 * @param  $rue
	 * @param  $cp
	 * @param  $ville
	 * @param  $listFormation
	 */
	abstract public function modifierInfosComposante ($rue, $cp, $ville, $listeFormation);
	 
	/**
	 * Fonction permettant de supprimer une formation d'une composante et de la BDD
	 * @param  $formation La formation a supprimer
	 */
	abstract public function supprimerFormation ($formation);
	

} // End Class Composante


?>

